iT邦幫忙

2021 iThome 鐵人賽

DAY 22
0
自我挑戰組

Discord-bot,從0開始到做出一個機器人系列 第 22

嗚咕,東西沒進到口袋裡 -- 探討Json

  • 分享至 

  • xImage
  •  

關於貨物沒進到口袋這檔事

  • 回到剛才的函式,我們分為2部分,第一是如果存在,那amount的數字必須加上買的數量,第二是如果沒有,那就添加
#cogs/money.py
# 使用try......except
try:
    # 使用count確認位置
    count = 0
    # 預設為0先認定它不存在,如存在則改為1
    exist = 0
    for cargo in users[str(user.id)]["bag"]:
        item = cargo["item"]
        if item == itemName:
            oldAmount = cargo["amount"]
            newAmount = oldAmount + amount
            users[str(user.id)]["bag"][count]["amount"] = newAmount
            exist = 1
            break
        count += 1
    if exist == 0:
        beginexist = {"item":itemName, "amount":amount}
        users[str(user.id)]["bag"].append(beginexist)
        
except:
    beginexist = {"item" : itemName, "amount" : amount}
    users[str(user.id)]["bag"] = [beginexist]
  • 最後,記得寫回去json裡面
with open("bank.json", "w") as f:
    json.dump(users, f)
    
await update_bank(user, cost*-1, "wallet")
return [True, "worked"]
  • 這樣就能確認運作囉

關於Json檔

  • bank(json)
{
    "682809473085079625": 
        {
            "wallet": 1054, 
            "bank": 0, 
            "bag": 
                [
                    {
                        "item": "watch", "amount": 10
                    }
                ]
        }
}
  • 這是到目前為止的格式
  • 其實追根究柢來說,可以使用資料庫,但什麼是Json?

什麼是Json

  • JSON 是資料交換的格式。 是 Javascript Object Notation 的縮寫。 先學 Javascript 再學 JSON 會有幫助,因為它是 Javascript 衍生出的一項功能。 JSON 是根據 JavaScript 的物件實字 (object literal) 發展的。 --Json精要讀書紀錄

結構

為甚麼不用資料庫

  • 第一是,容易解析,又可以有結構,純文字又方便傳輸,現在幾乎所有後端甚至JavaScript都支援Json格式

  • 第二是,因為資料庫連接較慢,我每呼叫一次函式就會發起一次請求,一點點還好,量多就......望向線上版資料庫,個人沒試過MySQL,或許會比較快...?(本人使用MongoDB)


上一篇
開始花錢囉......?
下一篇
關於報錯這檔事
系列文
Discord-bot,從0開始到做出一個機器人30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言